<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   HuJiangtang: Think SAS(二)  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
   MathJax.Hub.Config({
          tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]},
          TeX: {equationNumbers: {autoNumber: "AMS"}}
        });
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://cos.name/2010/12/think-sas-2/",
                  host: "http://cos.name",
                  prePath: "http://cos.name",
                  scheme: "http",
                  pathBase: "http://cos.name/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466441542: Accept with keywords: (title(0.25):中国,统计学,服务平台,门户网站, topn(0.4):语言,方面,程序员,R语言,数据挖掘,工具,过程,文件,内置,自定义,计算,文章,数据,统计分析,函数,步枪,编程,用户,C++,问题,递归,编程语言,统计学,代码,系统,评论,模块,软件,语系,统计师).-->
 </head>
 <body class="single single-post postid-2791 single-format-standard sidebar" onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    HuJiangtang: Think SAS(二)
   </h1>
  </div>
  <div class="container" id="xmain">
   <div class="hfeed site" id="page">
    <header class="site-header" id="masthead" role="banner">
     <div id="cos-logo">
      <a href="http://cos.name/">
       <img src="http://cos.name/wp-content/themes/COS-kermesinus/images/headers/cos-logo.png"/>
      </a>
     </div>
     <div class="navbar" id="navbar">
      <nav class="navigation main-navigation" id="site-navigation" role="navigation">
       <h3 class="menu-toggle">
        菜单
       </h3>
       <a class="screen-reader-text skip-link" href="http://cos.name/2010/12/think-sas-2/#content" title="跳至内容">
        跳至内容
       </a>
       <div class="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95-container">
        <ul class="nav-menu" id="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4746" id="menu-item-4746">
          <a href="http://cos.name">
           主页
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-8120" id="menu-item-8120">
          <a href="http://cos.name/cn">
           论坛
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8124" id="menu-item-8124">
            <a href="http://cos.name/cn/wp-login.php?action=register">
             论坛注册
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8125" id="menu-item-8125">
            <a href="http://cos.name/cn/wp-login.php">
             论坛登录
            </a>
           </li>
          </ul>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8110" id="menu-item-8110">
          <a href="http://cos.name/books/">
           图书资料
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8112" id="menu-item-8112">
          <a href="http://cos.name/videos">
           视频教程
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8333" id="menu-item-8333">
          <a href="http://cos.name/salon/">
           统计沙龙
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8111" id="menu-item-8111">
          <a href="http://cos.name/chinar/">
           R语言会议
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8109" id="menu-item-8109">
          <a href="http://cos.name/training/">
           讲座与培训
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8115" id="menu-item-8115">
          <a href="http://cos.name/cn/forum/comprehensive/job/">
           招聘信息
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4780" id="menu-item-4780">
          <a href="http://cos.name/about">
           关于我们
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8113" id="menu-item-8113">
            <a href="http://cos.name/2008/11/how-to-work-with-cos/">
             加入我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8119" id="menu-item-8119">
            <a href="http://cos.name/donate/">
             赞助我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8114" id="menu-item-8114">
            <a href="http://cos.name/cn/forum/26">
             项目合作
            </a>
           </li>
          </ul>
         </li>
        </ul>
       </div>
       <form action="http://cos.name/" class="search-form" method="get" role="search">
        <label>
         <span class="screen-reader-text">
          搜索：
         </span>
        </label>
       </form>
      </nav>
      <!-- #site-navigation -->
     </div>
     <!-- #navbar -->
    </header>
    <!-- #masthead -->
    <div class="site-main" id="main">
     <div class="content-area" id="primary">
      <div class="site-content" id="content" role="main">
       <article class="post-2791 post type-post status-publish format-standard hentry category-packages category-software tag-cc tag-fda tag-pl1 tag-r-language tag-s-plus tag-sas tag-xml tag-29 tag-384" id="post-2791">
        <header class="entry-header">
         <h1 class="entry-title">
          Think SAS(二)
         </h1>
         <div class="entry-meta">
          <span class="date">
           <a href="http://cos.name/2010/12/think-sas-2/" rel="bookmark" title="链向Think SAS(二)的固定链接">
            <time class="entry-date" datetime="2010-12-30T15:57:41+00:00">
             2010/12/30
            </time>
           </a>
          </span>
          <span class="categories-links">
           <a href="http://cos.name/category/software/packages/" rel="category tag">
            统计软件
           </a>
           、
           <a href="http://cos.name/category/software/" rel="category tag">
            软件应用
           </a>
          </span>
          <span class="tags-links">
           <a href="http://cos.name/tag/cc/" rel="tag">
            C/C++
           </a>
           、
           <a href="http://cos.name/tag/fda/" rel="tag">
            FDA
           </a>
           、
           <a href="http://cos.name/tag/pl1/" rel="tag">
            PL/1
           </a>
           、
           <a href="http://cos.name/tag/r-language/" rel="tag">
            R语言
           </a>
           、
           <a href="http://cos.name/tag/s-plus/" rel="tag">
            S-plus
           </a>
           、
           <a href="http://cos.name/tag/sas/" rel="tag">
            SAS
           </a>
           、
           <a href="http://cos.name/tag/sas%e7%a8%8b%e5%ba%8f%e5%91%98/" rel="tag">
            SAS程序员
           </a>
           、
           <a href="http://cos.name/tag/xml/" rel="tag">
            XML
           </a>
           、
           <a href="http://cos.name/tag/%e7%bb%9f%e8%ae%a1%e5%b7%a5%e5%85%b7/" rel="tag">
            统计工具
           </a>
           、
           <a href="http://cos.name/tag/%e9%80%92%e5%bd%92/" rel="tag">
            递归
           </a>
          </span>
          <span class="author vcard">
           <a class="url fn n" href="http://cos.name/author/hujiangtang/" rel="author" title="查看所有由胡江堂发布的文章">
            胡江堂
           </a>
          </span>
         </div>
         <!-- .entry-meta -->
        </header>
        <!-- .entry-header -->
        <div class="entry-content">
         <p>
         </p>
         <p>
          有个老本家，著有《白话文学史》（上卷）、《中国哲学史大纲》（上卷），——你知道他叫胡适。然后有朋友
          <a href="http://mysas.net/forum/viewtopic.php?f=8&amp;t=7201">
           问
          </a>
          这个
          <a href="http://cos.name/2010/04/think-sas-1/">
           “Think SAS”系列
          </a>
          有没有下文，我自然不敢托大，“半卷先生”不能做，还是老老实实地把这个系列往前推吧。
         </p>
         <p>
          <a href="http://cos.name/2010/04/think-sas-1/">
           第一篇“Think SAS”
          </a>
          中的“Think”，纯粹做“考虑”解，说，诸君如果为工作计，不妨考虑下SAS。下面说些关于SAS本身的一些思考与认识。俗话说，人类一思考，上帝就拍砖。上一篇是纯劝导型，这一篇就是求拍砖型。
         </p>
         <h2>
          0.总结与回应
         </h2>
         <p>
          在展开讨论之前，希望大伙对“事实问题”而不是“价值问题”能有一个统一的认识，这也是我对上篇各位的
          <a href="http://cos.name/2010/04/think-sas-1/#comments">
           评论
          </a>
          的一个总结与回应。
         </p>
         <h3>
          0.1 功能：SAS 与R
         </h3>
         <p>
          一些朋友询问SAS或R或其他软件功能的优劣，然后决定自己应该着手学哪个。这是一个伪问题，或至少也是一个不好的问题。一般来说，没有不好的问题，只有不好的回答，——但那的确是一个不好的问题。
         </p>
         <p>
          一门编程语言（本文讨论的是统计编程语言），只要能实现分支（if . . . then . . .）和循环（for/while/do . . . loops），就能够完成
          <strong>
           几乎
          </strong>
          所有的运算。这样说来，单问SAS是不是比R强大，或者R是不是比SAS强大就是一个意义不大的问题。它们都能较好地完成大多数的任务，强不强大的区别，在于背后的用户。一些更好的问题或许是，比如，它们的某些模块相比起来如何，它们的扩展性相比如何、它们的运算效率相比如何等等。个人认为，最好的问题是，在我现在如此这般的情况下，哪一款软件最适合我？这些问题也仁者见仁智者见智，但都能讨论出有意思的东西出来。
         </p>
         <p>
          我认为讨论软件优劣不是一个好问题，还有一个基于经验的理由，就是一般在这种情形下，你需要的不是一个答案，而是不管基于什么理由而迅速选择一门语言，然后沉浸下去。时间和精力不能浪费在观望上面。R如何，SAS又如何，如果还停留在询问探索阶段，它们都不是你的（套用一句话，不学进去，神马都是浮云）。
         </p>
         <p>
          以前说过，大多时候，你选择一门语言，不是因为你经过比较，认为A比B好故选A。你在图书馆看到哪本书，你旁边的朋友、同事、老师在使用哪个，或者更直接的，你被要求用哪个。无论是什么，学下去了都能胜任你大多数的日常工作。如果发现不够用，那恭喜你，你就处在一种知识/技能上的饥渴状态，我相信无论是哪一种新的语言，你都能迅速上手。
         </p>
         <h3>
          0.2  工具：SAS与统计
         </h3>
         <p>
          提到SAS，一些学统计出身的朋友很不屑：不就工具吗？统计
          <strong>
           思想
          </strong>
          才是王道！
         </p>
         <p>
          都说到思想了，我想认真回应下。在做统计分析时，SAS编程是工具。但在做决策时，统计本身也是辅助工具。因为处在上下游的关系而相互轻视，这不是一种开放的心态。
         </p>
         <p>
          <a href="http://sas-programming.blogspot.com">
           oloolo
          </a>
          对行业顶尖的统计师有一个非常好的总结，就是“对业务敏感，对统计老到，对编程熟练”。要是业务人员嘲笑统计师不懂业务，统计师嘲笑程序员不懂统计，程序员反过来嘲笑他们其实什么啥都做不了，这生态圈的境界未免就低了些。
         </p>
         <h3>
          0.3 SAS 与FDA以及“路径依赖”
         </h3>
         <p>
          作为一家标榜平台无关的监管机构，FDA没有要求药厂必须用SAS作为统计分析工具。但是，FDA要求所有的临床数据，都必须用SAS公司研发出来的一种开放数据格式提交（
          <a href="http://www.sas.com/industry/government/fda/faq.html">
           SAS transport file
          </a>
          ，后缀是.xpt）。还有，FDA的统计师的PC上装有SAS软件。这样，你大概就能理解为啥这行业都用SAS了。
         </p>
         <p>
          或者有人说，SAS被广泛使用，是因为它出道早，抢了个先机，倒不是因为它本身如何如何好。这个诘难在我看来是很软弱的：
         </p>
         <p>
          –首先，SAS并不是出道最早的，SPSS就比它早。S-plus也跟它是一个时代的产物。
         </p>
         <p>
          –关于“强了个先机”（路径依赖）。有时候你不能过高相信了用户的忠诚度。想想，你换了几种输入法、几种浏览器、几种搜索引擎？几十年来大浪淘沙，一个产品或服务始终占优，单单一个用户忠诚度是不能完全解释的。
         </p>
         <p>
          举个例子，比如FDA要求所有的临床数据用xpt格式提交，这个不是一成不变的。以前也提到，SAS的优势根本就不在数据存储上，XML就比xpt好，而且就是将来的方向。但是在药厂，程序员们还是将继续使用SAS来生成各种XML文件（包括
          <a href="http://www.cdisc.org/define-xml">
           define.xml
          </a>
          ）。SAS或许不是处理XML文件的最好工具，但至少在功能上没有任何问题，它可以是SAS程序员的最好工具（
          <em>
           参见本文0.1
          </em>
          ）。
         </p>
         <p>
          下面回到正题，说说SAS本身。
         </p>
         <h2>
          1. “巨无霸”SAS
         </h2>
         <p>
          下面这幅图，取自SYSTAT的创始人
          <a href="http://www.cs.uic.edu/~wilkinson/">
           Leland Wilkinson
          </a>
          的文章，
          <a href="http://pubs.amstat.org/doi/abs/10.1198/004017008000000460">
           <em>
            The Future of Statistical Computing
           </em>
          </a>
          ，大概按照几种标准对市场上存在的统计软件做了个聚类。一些统计软件的特点是将数据全部读入内存，在处理完了才跟磁盘交换数据，比如Stata、R等；Minitab、Statistica和SAS的JMP归为一类是因为它们都专注于质量控制领域；SPSS和SYSTAT在框架和用户界面比较类似（而且它们的归宿也类似，SYSTAT卖给了SPSS，后来SPSS又把它转手卖给印度。后来啊，SPSS本身又被IBM给买了）；Google和Microsoft归在一起，因为它们不是专注做统计软件的公司，但又有用户界面非常人性化的统计分析产品（轻客户端，比如Google Analytics）。
         </p>
         <p>
          SAS呢？SAS跟它们都不一样。上文只好根据安装介质最大这条标准，把SAS单独归为一类（图中SAS的字号最大，是因为这家公司在分析领域收入最高）。
         </p>
         <p>
          <a href="http://cos.name/wp-content/uploads/2010/12/SASetc.png">
           <img src="http://cos.name/wp-content/uploads/2010/12/SASetc_thumb.png"/>
          </a>
         </p>
         <p>
         </p>
         <p>
          “巨无霸”的确是SAS给人的第一个鲜明的印象。所以在大多数场合，拿它跟其他统计软件相比，就有以大欺小之嫌，SAS早已经不仅仅是
          <strong>
           S
          </strong>
          tatistical
          <strong>
           A
          </strong>
          nalysis
          <strong>
           S
          </strong>
          ystem（具体的可参见本系列第一篇之
          <a href="http://cos.name/2010/04/think-sas-1/" target="_blank">
           “SAS是什么？”
          </a>
          ）。
         </p>
         <h3>
          1.1 SAS的编程元素
         </h3>
         <p>
          SAS的"巨无霸"特点,表现在它的产品线的多样化（功能/行业）,也表现在它
          <a href="http://www.jiangtanghu.com/cn/2008/10/21/sas%E7%9A%84%E7%BC%96%E7%A8%8B%E5%85%83%E7%B4%A0%EF%BC%88oop%E5%92%8C%E5%85%B6%E4%BB%96%EF%BC%89/" target="_blank">
           编程元素的多样化
          </a>
          ：
         </p>
         <blockquote>
          <p>
           –-它
           <strong>
            主要
           </strong>
           是一门过程式的语言（循环、分支、数组，……），但其中也不乏面对对象的特性：
          </p>
          <p>
           —首先，
           <a href="http://www.sas.com/technologies/bi/appdev/af/index.html">
            SAS/AF
           </a>
           就是一门完全面对对象的应用开发语言。
          </p>
          <p>
           —在SAS/Base中，–通过
           <a href="http://support.sas.com/rnd/base/datastep/dot/javaobj.html">
            Data Step Component Interface
           </a>
           ,你可以在数据步里建立纯OOP 的Java对象。
          </p>
          <p>
           —在DDS中，有一个类似的
           <a href="http://support.sas.com/rnd/base/datastep/dsobject/index.html">
            DDS Data Step Object
           </a>
          </p>
          <p>
           —最后，在Macro中，一样可以体现出以上提到的各种OO特性
          </p>
          <p>
          </p>
          <p>
           –对C/C++程序员来说，它提供了一个
           <a href="http://www.sas.com/products/sasc/index.html">
            SAS/C Complier
           </a>
          </p>
          <p>
           –-对Java程序员，它有一个基于Eclipse的开发环境
           <a href="http://www.sas.com/technologies/bi/appdev/appdev/">
            SAS AppDev Studio
           </a>
           ，可以方便地利用SAS的计算引擎开发各种应用，
          </p>
          <p>
           –-矩阵运算一块，SAS的矩阵语言
           <a href="http://johnthu.spaces.live.com/blog/cns!2053CD511E6D5B1E!539.entry">
            IML与Matlab、R等相比
           </a>
           也不弱
          </p>
          <p>
           –-字符处理，除了大量的字符函数，
           <a href="http://johnthu.spaces.live.com/blog/cns!2053CD511E6D5B1E!474.entry">
            SAS也支持Perl正则表达式
           </a>
          </p>
          <p>
           –-支持标准SQL语句
          </p>
          <p>
           –-支持Hash表
          </p>
          <p>
           –-为XML数据提供了XML引擎
          </p>
          <p>
           –……
          </p>
         </blockquote>
         <p>
          SAS的这种“杂糅”风格，也受到不少批评。一个感觉就是似乎有些“粗”（大象能不能跳舞？），比如，很明显，S语言就比它精细许多。在统计分析一块，S语言是SAS的主要竞争者，我先绕开讲个故事。
         </p>
         <h3>
          1.2 SAS vs S: AK47 vs M16:一个类比
         </h3>
         <p align="justify">
          在枪械史上，有两款步枪最受人瞩目，而且经常拿来做对比，它们就是AK47和M16（
          <em>
           以下关于这两款步枪的材料来自网络
          </em>
          ）。
         </p>
         <p align="justify">
          AK47出自前苏联一名坦克车长卡拉什尼科夫上士之手。1942年他回家养伤，跟一个火车司机在一个小工棚里打磨了一支自动步枪。以后不断改进，1946年，他的AK46送去靶场接受极限测试：连续射击子弹1.5万发，枪管打红了，射击精度却没有什么大的变化。以后这支步枪就以AK47的名字扬名天下，它结构简单，结实耐用，故障极少，造价低廉，威力巨大，能在寒冷、炎热、风雨、沙漠甚至水中都能使用。
         </p>
         <p align="justify">
          M16最早出现在上世纪60年代，设计师是美国知名的枪械大师斯通纳。他在M16的各个部件上广泛采用了铝合金和塑料等轻型材料，制造工艺非常先进，枪身也更精致时尚。另外，M16口径稍小，射击精度有所提高，但它对射击的环境要求很高，枪管不能进水，有时下雨受潮也影响射击精度。再加上性能不稳定，连续打出4500发以上的子弹，就造成某些零件的断裂。
         </p>
         <p align="justify">
          讲到这里，大家都应该能猜到我想说什么。
          <strong>
           除了价格因素
          </strong>
          ，在比喻的意义上，SAS就是AK47（
          <strong>
           注
          </strong>
          ：这里的SAS指其与S相对应的部分，下同；整个SAS系统是一个武器库而不是一个单兵武器），S语系就是M16，或者保险一点，与M16相比，SAS更像AK47；与AK47相比，S语系更像M16。S语言出身名门（贝尔实验室），设计精巧，获过ACM大奖。SAS语言则出自于一位物理学背景的程序员之手（
          <a href="http://en.wikipedia.org/wiki/Anthony_James_Barr" target="_blank">
           Tony Barr
          </a>
          ），当时他所在的机构急需解决方差分析等问题。接下来的故事大伙都很清楚了，AK47成了战场上使用最受欢迎的步枪。
         </p>
         <h3>
          1.3 SAS的优缺点，以及关于其编译器的一些讨论
         </h3>
         <p align="justify">
          SAS的设计，很多是基于商业世界的要求。比如，对于数值型变量，SAS只提供一种浮点型格式，这让它在计算性能方面有些吃亏（想想看，就连1+1，SAS都要当成两个浮点数来计算，习惯于首先声明”int x”的C/C++程序员看了大概要不爽），但是，比如，关于日期格式(format和informat)，SAS却提供了近百种供选择。纯浮点数让系统开销大一些，但是在设计方面可以简化不少，但是全世界各种不同的日期格式却丝毫不能省略。SAS系统一路“堆积”至此，是考虑，有时甚至是迎合了市场的需要。
         </p>
         <p align="justify">
          在比喻的基础上做进一步的引申会很危险。SAS语言脱胎于
          <a href="http://en.wikipedia.org/wiki/PL/I" target="_blank">
           PL/1
          </a>
          。与其他过程式编程语言相比，
          <a href="http://www.kednos.com/pli/king.pdf" target="_blank">
           往好里说
          </a>
          ，PL/1在异常处理方面强过Ada，在文本处理方面强过Basic，在输入输出管理方面强过Cobol，在计算方面强过Fortran，在流程控制方面强过Pascal，在内存管理方面强过C，当然，在宏替换方面强过汇编。SAS无意在系统编程或算法实现跟其他语言一较长短，但它在数据访问、数据管理、报表展示、数据分析以及编程灵活和易用性方面的强大优势（
          <em>
           详见下
          </em>
          ），使得它在商业世界一直长盛不衰。
         </p>
         <p align="justify">
          当然，SAS的缺点也非常明显。比如， 直到SAS9.2它才能够在数据步(data step)里自定义函数，你会想，作为一门过程式的语言，以前不能自定义函数的日子怎么过？毫无疑问，这是一个限制。但是，在SAS中，你还以通过其他方式完成类似的功能。首先，SAS有大量的内置函数，在你想自定义函数之前，先麻烦查一下函数手册；然后，你可以定义一个“类似函数的”宏（Macro），这是应用最广泛的方式;或者，你也可以直接在SAS的矩阵语言IML定义函数。
         </p>
         <p align="justify">
          说到IML，这是一个好东西，但是，这么多年了，这家伙居然不能够实现递归！！毫无疑问，这也是一个限制。但是，首先，所有的递归都可以写成一个等价的循环，而且循环的效率还高些；其次，你可以在Macro里实现递归；而且，好消息是，SAS9.2的自定义函数完全支持递归调用。
         </p>
         <p align="justify">
          讨论SAS本身的优点跟缺点，不得不提一下系统底层的东西。比如，Tony Barr在设计SAS系统的时候（上世纪六七十年代），它的编译器用的就是一个递归下降解析器(
          <a href="http://en.wikipedia.org/wiki/Recursive_descent_parser">
           recursive descent parser
          </a>
          )，这是一种自上而下的编译方式。深入讨论这个话题超出了本文的范围，简单说一下这种编译方式的优点和缺点。
         </p>
         <p align="justify">
          它的突出优点是：它超级简单，跟AK47一样，意思是说它超级稳健（robust）。它的缺点也很明显，超级简单的一个代价就是，有时候它不够精确。想想看，假设你跑一段代码，然后查日志文件(log)，发现报错信息是在第2011行。一个建议是，比如，你最好从2009行开始查看你的代码。
         </p>
         <h3>
          1.4 关于SAS与S语系的一些展望
         </h3>
         <p align="justify">
          上面多次提到了S语系。我不熟悉它，但也非常看好它。冒着危险再讲个故事。
         </p>
         <p align="justify">
          战后卡拉什尼科夫访问过美国，跟斯通纳玩了个友谊赛，他用M16，斯通纳用AK47。两位对手中的步枪评价都很高。他们都认为，未来步枪将会向向小口径、轻型化、通用性方向发展（S？！）；当然，其前提仍然是性能可靠，适合各种复杂多变和条件恶劣的自然气候（SAS？！）。
         </p>
         <p align="justify">
          <a href="http://cos.name/2009/01/r-and-sas-new-york-times/">
           再一次
          </a>
          ，我鼓吹的是SAS与S的融合。现在SAS系统有好几个部分兼容R，你可以在Stat Studio和JMP里跑R代码。作为一个SAS程序员，我觉着这样还不够，最好是在SAS Base里整合一个与PROC SQL、PROC IML平行的PROC R。
         </p>
         <h2>
          2. Programming SAS（用SAS编程！）
         </h2>
         <p align="justify">
          SAS中文社区神龙见首不见尾的高手，SAS_Dream，在2004年抛出一篇《
          <a href="http://saslist.net/archives/87">
           SAS语言管窥
          </a>
          》，梳理SAS 的各种语系，如BASE、STAT、AF等，多读多有启发。
         </p>
         <p align="justify">
          下面讨论的也是SAS的编程特点。有一个区分，SAS程序员(SAS Programmer)和SAS用户(SAS User)。一个纯SAS程序员更多使用SAS的编程模块（SAS Base、SAS/AF等），一个纯SAS用户更多使用SAS的非编程模块，比如统计分析模块SAS/STAT、SAS的GUI工具SAS Enterprise Guide、SAS Enterprise Miner等。从这个角度来说，跟SAS_Dream的看法不一样，我把SAS/STAT等分析模块从SAS编程语言的范畴中剔除出去了。那些模块需要的更多的是业务知识（比如统计学），没有丝毫的编程乐趣。当然，一个人可能倾向于是SAS程序员或者SAS用户，或者有时候是SAS程序员，有时候是SAS用户。
         </p>
         <h3>
          2.1 Data Steps
         </h3>
         <p>
          data steps（数据步）是SAS最核心的东西，一种第四代过程式编程语言，脱胎于
          <a href="http://en.wikipedia.org/wiki/PL/I" target="_blank">
           PL/1
          </a>
          。
         </p>
         <p>
          一些人认为SAS的语法结构怪异，其实这是很大的误解。作为一门通用性的过程式语言，它在顺序语句、分支、循环方面跟其他过程式语言（或过程式/结构式编程方式）没什么太大区别。
         </p>
         <p>
          SAS data step跟其他语言最大的区别，在于它的内置循环。举个例子，在d盘里有一个数据文件，data.dat，存有三个数字：
         </p>
         <blockquote>
          <p>
           <strong>
            1
            <br/>
            2
            <br/>
            3
           </strong>
          </p>
         </blockquote>
         <p>
          用SAS读取这个文件并计算它们的和是很简单的事情。先看看其他语言是如何操作的，比如C++。C++是一门过程式兼面对对象的语言，下面的例子展示的是C++过程式的编程风格（不熟悉C++语法的朋友，可以只看中间加粗的部分）：
         </p>
         <blockquote>
          <p>
           <font face="Courier New">
            #include &lt;iostream&gt;
            <br/>
            #include &lt;fstream&gt;
            <br/>
            using namespace std;
           </font>
          </p>
          <p>
           <font face="Courier New">
            int main()
            <br/>
            {
            <br/>
            int x;
            <br/>
            int sum=0;
            <br/>
            ifstream inFile;
            <br/>
            inFile.open("d:data.dat");
            <br/>
            inFile &gt;&gt; x;
           </font>
          </p>
          <p>
           <font face="Courier New">
            <br/>
           </font>
           <font face="Courier New">
            <strong>
             while (!inFile.
             <font color="#ff0000">
              eof( )
             </font>
             )
             <br/>
             {
             <br/>
             cout&lt;&lt;x&lt;&lt;endl;
             <br/>
             sum = sum + x;
             <br/>
             inFile &gt;&gt; x;
             <br/>
             }
            </strong>
           </font>
          </p>
          <p>
           <font face="Courier New">
            <strong>
             <br/>
            </strong>
            inFile.close( );
            <br/>
            cout &lt;&lt; "Sum = " &lt;&lt; sum &lt;&lt; endl;
            <br/>
            return 0;
            <br/>
            }
           </font>
          </p>
         </blockquote>
         <p>
          中间加粗的部分是一个循环，在没有到达数据末尾时（即“3”那个数字，代码中的条件是!inFile.eof(),其中，感叹号是not的意思，eof就是end of file。），持续输出文件里的数字并累加，结果就是
         </p>
         <blockquote>
          <p>
           <strong>
            1
            <br/>
            2
            <br/>
            3
            <br/>
            sum=6
           </strong>
          </p>
         </blockquote>
         <p>
          以下的SAS代码产生同样的结果:
         </p>
         <blockquote>
          <p>
           <font face="Courier New">
            data _null_;
            <br/>
            infile "d:\data.dat" end=eof;
            <br/>
            input x;
           </font>
          </p>
          <p>
           <font face="Courier New">
            sum+x;
           </font>
          </p>
          <p>
           <font face="Courier New">
            put x;
            <br/>
            if eof then put sum=;
            <br/>
            run;
           </font>
          </p>
         </blockquote>
         <p>
          上面的SAS代码，同样是运行直到文件的末尾，但它并不需要一个显式的循环来读取那文件里的3个数字（内置循环，说的就是这个）。理解SAS data step内置循环的特点，是SAS进阶的关键。详细的，可见
          <a href="http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000985872.htm" target="_blank">
           Overview of DATA Step Processing
          </a>
          。
         </p>
         <p>
          —————-
         </p>
         <p>
          写不动了，下期预告，大伙新年愉快。
         </p>
         <h3>
          2.2 SAS BASE
         </h3>
         <p>
          SAS BASE不是
          <font color="#ff0000">
           一
          </font>
          门语言，而是一系列编程语言的大杂烩。它是在data step的基础上，加上其他编程元素，如SQL、Macro、ODS和一些proc steps等。只有最顽固（可能也是最骄傲）的SAS程序员仍然坚持2.1的风格，大多数SAS程序员都是使用SAS BASE进行混合编程。当我们是SAS编程语言的时候，一般说的就是这个SAS BASE。它是SAS系统的一个模块（或软件），与SAS/STAT等模块并列。
         </p>
         <h4>
          2.2.1 PROC SQL
         </h4>
         <h4>
          2.2.2 过程步(PROCs steps)
         </h4>
         <h4>
          2.2.3 宏（Macro）
         </h4>
         <p>
          (
          <em>
           <font color="#ff0000">
            to be continued
           </font>
          </em>
          )
         </p>
         <div class="wumii-hook">
          <br/>
          <br/>
         </div>
        </div>
        <!-- .entry-content -->
        <footer class="entry-meta">
         <div class="author-info">
          <div class="author-avatar">
           <img src="http://sdn.geekzu.org/avatar/abd82db6fc93f4ed3c5ae292f4d8f0c7?s=74&amp;d=monsterid&amp;r=g"/>
          </div>
          <!-- .author-avatar -->
          <div class="author-description">
           <h2 class="author-title">
            关于胡江堂
           </h2>
           <p class="author-bio">
            胡江堂，行业/职业：医药/SAS程序员；教育背景：经济学-&gt;软件工程；学术兴趣：数据挖掘-商务智能，信用评分-数量金融、SAS-应用统计；个人主页：
            <a href="http://jiangtanghu.com//">
             http://jiangtanghu.com/
            </a>
            <a class="author-link" href="http://cos.name/author/hujiangtang/" rel="author">
             查看所有由胡江堂发表的文章
             <span class="meta-nav">
              →
             </span>
            </a>
           </p>
          </div>
          <!-- .author-description -->
         </div>
         <!-- .author-info -->
        </footer>
        <!-- .entry-meta -->
       </article>
       <!-- #post -->
       <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text">
         文章导航
        </h1>
        <div class="nav-links">
         <a href="http://cos.name/2010/11/3rd-china-r-shanghai-summary/" rel="prev">
          <span class="meta-nav">
           ←
          </span>
          第三届中国R语言会议（上海会场）纪要
         </a>
         <a href="http://cos.name/2011/01/cache-objects-in-sweave-stat-computation-and-graphics/" rel="next">
          Sweave后传：统计报告中的大规模计算与缓存
          <span class="meta-nav">
           →
          </span>
         </a>
        </div>
        <!-- .nav-links -->
       </nav>
       <!-- .navigation -->
       <div class="comments-area" id="comments">
        <h2 class="comments-title">
         《
         <span>
          Think SAS(二)
         </span>
         》有17个想法
        </h2>
        <ol class="comment-list">
         <li class="comment even thread-even depth-1 parent" id="comment-1804">
          <article class="comment-body" id="div-comment-1804">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/bb03d6dac07bb275a35da1f722eca380?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://sas-programming.blogspot.com" rel="external nofollow">
               oloolo
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1804">
              <time datetime="2010-12-30T16:53:02+00:00">
               2010/12/30 16:53
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             nice sofa!
             <br/>
             keep up, dude.
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给oloolo" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1804#respond" onclick='return addComment.moveForm( "div-comment-1804", "1804", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment odd alt depth-2" id="comment-1806">
            <article class="comment-body" id="div-comment-1806">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/abd82db6fc93f4ed3c5ae292f4d8f0c7?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://jiangtanghu.com" rel="external nofollow">
                 胡江堂
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2010/12/think-sas-2/#comment-1806">
                <time datetime="2010-12-30T17:23:49+00:00">
                 2010/12/30 17:23
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               哈哈，都在休假中啊。期待你的大作问世。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给胡江堂" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1806#respond" onclick='return addComment.moveForm( "div-comment-1806", "1806", "respond", "2791" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-1805">
          <article class="comment-body" id="div-comment-1805">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/6ca0529d22d1bf25a1e5cee3af3456f9?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://bjt.name" rel="external nofollow">
               刘思喆
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1805">
              <time datetime="2010-12-30T17:01:16+00:00">
               2010/12/30 17:01
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             先给江堂找个错，呵呵。
             <br/>
             SAS 公司更早（SPSS 是1968年；SAS 是1966年，1968年 Mr. Goodnight 加入）
             <br/>
             剩下关于 R 与 SAS 的，酝酿一下，哈哈
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给刘思喆" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1805#respond" onclick='return addComment.moveForm( "div-comment-1805", "1805", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment odd alt depth-2 parent" id="comment-1807">
            <article class="comment-body" id="div-comment-1807">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/abd82db6fc93f4ed3c5ae292f4d8f0c7?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://jiangtanghu.com" rel="external nofollow">
                 胡江堂
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2010/12/think-sas-2/#comment-1807">
                <time datetime="2010-12-30T17:29:54+00:00">
                 2010/12/30 17:29
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               呵呵老刘，这个对错可不分明。不过先谢了啊。
              </p>
              <p>
               作为公司，SAS是1976年成立的，SPSS是1968年成立的。
              </p>
              <p>
               作为软件，这个不好界定。的确，1966年Tony Barr就有了SAS的雏形，但直到1972年，SAS才有了它第一个广为接受的发行版。而SPSS的第一个发行版是1968年。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给胡江堂" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1807#respond" onclick='return addComment.moveForm( "div-comment-1807", "1807", "respond", "2791" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment even depth-3" id="comment-2446">
              <article class="comment-body" id="div-comment-2446">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/882b264506221a3ddb19cc5bced1d661?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  王才秋
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2010/12/think-sas-2/#comment-2446">
                  <time datetime="2011-09-15T15:16:41+00:00">
                   2011/09/15 15:16
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 小生很费解，扯这个有用吗？
                </p>
                <p>
                 这种探讨，大多是被情绪所主导。
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-even depth-1" id="comment-1808">
          <article class="comment-body" id="div-comment-1808">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/db388ef42ecd962a47809e62c9f0f873?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              RaielZ
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1808">
              <time datetime="2010-12-30T18:07:24+00:00">
               2010/12/30 18:07
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             好短- – 就沒了哪。。。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给RaielZ" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1808#respond" onclick='return addComment.moveForm( "div-comment-1808", "1808", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-1809">
          <article class="comment-body" id="div-comment-1809">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/b4ade9b6c738c92dddcd4df09e39b03b?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://saslist.com" rel="external nofollow">
               sxlion
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1809">
              <time datetime="2010-12-30T18:30:15+00:00">
               2010/12/30 18:30
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             元旦快乐！jiayou ！
            </p>
            <p>
             貌似内容依旧四平八稳。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给sxlion" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1809#respond" onclick='return addComment.moveForm( "div-comment-1809", "1809", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment odd alt depth-2" id="comment-1810">
            <article class="comment-body" id="div-comment-1810">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/abd82db6fc93f4ed3c5ae292f4d8f0c7?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://jiangtanghu.com" rel="external nofollow">
                 胡江堂
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2010/12/think-sas-2/#comment-1810">
                <time datetime="2010-12-30T22:12:55+00:00">
                 2010/12/30 22:12
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               xlion，我是技止于此啦。幸亏写成（二），尚有系列以作来年遐想……
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给胡江堂" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1810#respond" onclick='return addComment.moveForm( "div-comment-1810", "1810", "respond", "2791" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-1811">
          <article class="comment-body" id="div-comment-1811">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/5d42e73f7841c97edd41a845f5c995ec?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              张海洋
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1811">
              <time datetime="2010-12-31T09:30:14+00:00">
               2010/12/31 09:30
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             短小精悍，言简意赅。
             <br/>
             真的是学而不思则罔，死而不学则殆。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给张海洋" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1811#respond" onclick='return addComment.moveForm( "div-comment-1811", "1811", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1" id="comment-1815">
          <article class="comment-body" id="div-comment-1815">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/bb0feb76115ecef9b879790477c0a7c2?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              itellin
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1815">
              <time datetime="2011-01-01T15:44:58+00:00">
               2011/01/01 15:44
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             你就是说道天上去，SAS的数据结构还是过于单板，相比R，少了很多。不能要使用一种结构，还要自己去定义吧。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给itellin" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1815#respond" onclick='return addComment.moveForm( "div-comment-1815", "1815", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-1837">
          <article class="comment-body" id="div-comment-1837">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/a17bbcf39ae04c1ab89d9c60efc811c4?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              llliii
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1837">
              <time datetime="2011-01-12T17:11:03+00:00">
               2011/01/12 17:11
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             一直在看你的文章，因为实习的需要目前刚刚在学SAS。我是学物理的，总感觉C或者C++要比SAS严谨一些，就像做一件事，C语言就好似从头到尾都要考虑得详细，而SAS则似乎只需做个大概。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给llliii" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1837#respond" onclick='return addComment.moveForm( "div-comment-1837", "1837", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1" id="comment-1867">
          <article class="comment-body" id="div-comment-1867">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/7eb1cd59414840b6df59cab73090dbc9?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              G_will
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-1867">
              <time datetime="2011-01-24T15:39:10+00:00">
               2011/01/24 15:39
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             好文章！
            </p>
            <p>
             @胡江堂 您什么时候会来厦门呢？我给您组织个讲座吧。殷切期待着！！
            </p>
            <p>
             p.s. 管饭&amp;厦大半日游，呵呵。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给G_will" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=1867#respond" onclick='return addComment.moveForm( "div-comment-1867", "1867", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-2192">
          <article class="comment-body" id="div-comment-2192">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/67259cb587de80ad2c6833c1b1e1766c?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              saga
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-2192">
              <time datetime="2011-05-31T09:35:34+00:00">
               2011/05/31 09:35
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             收获很大，继续向大侠们学习
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给saga" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=2192#respond" onclick='return addComment.moveForm( "div-comment-2192", "2192", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="pingback odd alt thread-odd thread-alt depth-1" id="comment-2452">
          <div class="comment-body">
           Pingback：
           <a class="url" href="http://saslist.net/archives/200" rel="external nofollow">
            » SAS资源资讯列表
           </a>
          </div>
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-5385">
          <article class="comment-body" id="div-comment-5385">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://www.douban.com/people/xiangjiaoyu/" rel="external nofollow">
               硅胶鱼
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-5385">
              <time datetime="2014-02-24T02:36:43+00:00">
               2014/02/24 02:36
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             递归下降解析只是解析程序形成语法树的过程，不能叫“编译方式”。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给硅胶鱼" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=5385#respond" onclick='return addComment.moveForm( "div-comment-5385", "5385", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1" id="comment-6047">
          <article class="comment-body" id="div-comment-6047">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://t.qq.com/Triciablue" rel="external nofollow">
               闫智萍
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-6047">
              <time datetime="2014-07-18T00:31:30+00:00">
               2014/07/18 00:31
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             java class 在装sas的时候会设置好么? 还是要自己下载?
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给闫智萍" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=6047#respond" onclick='return addComment.moveForm( "div-comment-6047", "6047", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-6048">
          <article class="comment-body" id="div-comment-6048">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://t.qq.com/Triciablue" rel="external nofollow">
               闫智萍
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2010/12/think-sas-2/#comment-6048">
              <time datetime="2014-07-18T00:31:47+00:00">
               2014/07/18 00:31
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             谢谢~
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给闫智萍" class="comment-reply-link" href="http://cos.name/2010/12/think-sas-2/?replytocom=6048#respond" onclick='return addComment.moveForm( "div-comment-6048", "6048", "respond", "2791" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
        </ol>
        <!-- .comment-list -->
        <div class="comment-respond" id="respond">
         <h3 class="comment-reply-title" id="reply-title">
          发表评论
          <small>
           <a href="http://cos.name/2010/12/think-sas-2/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">
            取消回复
           </a>
          </small>
         </h3>
         <form action="http://cos.name/wp-comments-post.php" class="comment-form" id="commentform" method="post" novalidate="">
          <p class="comment-notes">
           <span id="email-notes">
            电子邮件地址不会被公开。
           </span>
           必填项已用
           <span class="required">
            *
           </span>
           标注
          </p>
          <p class="comment-form-comment">
           <label for="comment">
            评论
           </label>
           <textarea aria-required="true" cols="45" id="comment" maxlength="65525" name="comment" required="required" rows="8">
           </textarea>
          </p>
          <p class="comment-form-author">
           <label for="author">
            姓名
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-email">
           <label for="email">
            电子邮件
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-url">
           <label for="url">
            站点
           </label>
          </p>
          <p class="form-submit">
          </p>
          <p style="display: none;">
          </p>
          <p style="display: none;">
          </p>
         </form>
        </div>
        <!-- #respond -->
       </div>
       <!-- #comments -->
      </div>
      <!-- #content -->
     </div>
     <!-- #primary -->
     <div class="sidebar-container" id="tertiary" role="complementary">
      <div class="sidebar-inner">
       <div class="widget-area">
        <aside class="widget widget_text" id="text-3">
         <h3 class="widget-title">
          关注统计之都
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            新浪微博
            <a href="http://weibo.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            人人网
            <a href="http://renren.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            Twitter
            <a href="http://twitter.com/cos_name">
             @cos_name
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-6">
         <h3 class="widget-title">
          微信公众平台
         </h3>
         <div class="textwidget">
          <img src="http://cos.name/wp-content/uploads/2013/04/qrcode-8cm.jpg"/>
          <p style="font-size:12px;margin-left:15px">
           微信号 CapStat
          </p>
          <p>
           我们将第一时间向您推送主站和论坛的精彩内容，以及统计之都的线下活动、竞赛、培训和会议信息。
          </p>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-8">
         <h3 class="widget-title">
          站内导航
         </h3>
         <div class="textwidget">
          <ul>
           <li class="page_item">
            <a href="http://cos.name/cn/">
             中文论坛
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/videos/">
             视频
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/salon/">
             统计沙龙
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/books/">
             图书出版
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/training/">
             教育培训
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/about/">
             关于我们
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/donate/">
             捐赠
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/chinar/">
             R语言会议
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_links" id="linkcat-2">
         <h3 class="widget-title">
          友情链接
         </h3>
         <ul class="xoxo blogroll">
          <li>
           <a href="http://stat.ruc.edu.cn" target="_blank" title="中国人民大学统计学院网站">
            中国人民大学统计学院
           </a>
          </li>
          <li>
           <a href="http://rucdmc.net">
            中国人民大学数据挖掘中心
           </a>
          </li>
          <li>
           <a href="http://birc.gsm.pku.edu.cn/" target="_blank">
            北京大学商务智能研究中心
           </a>
          </li>
          <li>
           <a href="http://sam.cufe.edu.cn/" target="_blank" title="中央财经大学统计与数学学院网站">
            中央财经大学统计与数学学院
           </a>
          </li>
          <li>
           <a href="http://tjx.cueb.edu.cn/" target="_blank" title="首都经济贸易大学统计学院网站">
            首经贸统计学院
           </a>
          </li>
          <li>
           <a href="http://www.shookr.com/">
            数客网大数据社区
           </a>
          </li>
          <li>
           <a href="http://www.xueqing.tv/" target="_blank" title="数据科学在线学习平台">
            雪晴数据网
           </a>
          </li>
          <li>
           <a href="http://iera.name/" target="_blank" title="IERA是一个旨在普及、传播和增进工业工程知识的非营利性网站">
            IERA（直通IE）
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_categories" id="categories-2">
         <h3 class="widget-title">
          全部分类
         </h3>
         <label class="screen-reader-text" for="cat">
          全部分类
         </label>
         <select class="postform" id="cat" name="cat">
          <option value="-1">
           选择分类目录
          </option>
          <option class="level-0" value="925">
           cos访谈  (4)
          </option>
          <option class="level-0" value="659">
           图书出版  (5)
          </option>
          <option class="level-0" value="379">
           数学方法  (14)
          </option>
          <option class="level-1" value="381">
           分析与代数  (1)
          </option>
          <option class="level-1" value="380">
           概率论  (9)
          </option>
          <option class="level-1" value="382">
           随机过程  (5)
          </option>
          <option class="level-0" value="210">
           数据分析  (81)
          </option>
          <option class="level-1" value="203">
           多元统计  (3)
          </option>
          <option class="level-1" value="42">
           数据挖掘与机器学习  (42)
          </option>
          <option class="level-1" value="36">
           生物与医学统计  (17)
          </option>
          <option class="level-1" value="35">
           计量经济学  (4)
          </option>
          <option class="level-1" value="296">
           金融统计  (3)
          </option>
          <option class="level-1" value="303">
           风险精算  (7)
          </option>
          <option class="level-0" value="177">
           模型专题  (15)
          </option>
          <option class="level-1" value="38">
           回归分析  (10)
          </option>
          <option class="level-1" value="41">
           时间序列  (2)
          </option>
          <option class="level-0" value="784">
           每周精选  (24)
          </option>
          <option class="level-1" value="183">
           可视化  (9)
          </option>
          <option class="level-0" value="967">
           沙龙纪要  (3)
          </option>
          <option class="level-0" value="18">
           经典理论  (46)
          </option>
          <option class="level-1" value="37">
           抽样调查  (3)
          </option>
          <option class="level-1" value="4">
           统计推断  (26)
          </option>
          <option class="level-1" value="236">
           试验设计  (7)
          </option>
          <option class="level-1" value="39">
           非参数统计  (3)
          </option>
          <option class="level-0" value="1">
           统计之都  (279)
          </option>
          <option class="level-1" value="884">
           中国R会议  (2)
          </option>
          <option class="level-1" value="885">
           中国R语言会议  (5)
          </option>
          <option class="level-1" value="446">
           出国留学  (3)
          </option>
          <option class="level-1" value="179">
           推荐文章  (90)
          </option>
          <option class="level-1" value="3">
           新闻通知  (75)
          </option>
          <option class="level-1" value="263">
           统计刊物  (10)
          </option>
          <option class="level-1" value="174">
           网站导读  (40)
          </option>
          <option class="level-1" value="204">
           职业事业  (51)
          </option>
          <option class="level-1" value="213">
           高校课堂  (9)
          </option>
          <option class="level-0" value="178">
           统计计算  (28)
          </option>
          <option class="level-1" value="40">
           优化与模拟  (15)
          </option>
          <option class="level-1" value="43">
           贝叶斯方法  (6)
          </option>
          <option class="level-0" value="378">
           软件应用  (116)
          </option>
          <option class="level-1" value="44">
           统计图形  (36)
          </option>
          <option class="level-1" value="110">
           统计软件  (83)
          </option>
         </select>
        </aside>
        <aside class="widget widget_recent_comments" id="recent-comments-2">
         <h3 class="widget-title">
          最新评论
         </h3>
         <ul id="recentcomments">
          <li class="recentcomments">
           <span class="comment-author-link">
            fineboom
           </span>
           发表在《
           <a href="http://cos.name/2016/06/use-shiny-fleetly-set-up-visual-prototype-system/#comment-7317">
            利用shiny包快速搭建可视化原型系统
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            胡家新
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7316">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://www.zijiacha.com/category.php?id=6" rel="external nofollow">
             南糯山普洱茶
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7315">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            J
           </span>
           发表在《
           <a href="http://cos.name/2016/05/value-of-the-reputation-from-the-data/#comment-7314">
            数据告诉你：高信誉的卖家应该收高价，还是收低价？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://gg" rel="external nofollow">
             Hilda
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2013/01/drawing-map-in-r-era/#comment-7311">
            R时代，你要怎样画地图？
           </a>
           》
          </li>
         </ul>
        </aside>
        <aside class="widget widget_rss" id="rss-282869971">
         <h3 class="widget-title">
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           <img src="http://cos.name/wp-includes/images/rss.png"/>
          </a>
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           中文论坛新帖
          </a>
         </h3>
         <ul>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417372/">
            处理时间数据和产生时间序列的问题
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/6790/">
            《统计陷阱》下载 （How to lie with statistics）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/818/">
            统计学的世界（第五版）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/16574/">
            class(x) 返回值值是AsIs,AsIs代表什么，有什么用处？
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417366/">
            如何用R绘制一个分类算法的决策规则
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_text" id="text-2">
         <h3 class="widget-title">
          登录/RSS
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <a href="http://cos.name/wp-admin/">
             登录
            </a>
           </li>
           <li>
            <a href="http://cos.name/feed/" title="使用 RSS 2.0 同步站点内容">
             文章
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
           <li>
            <a href="http://cos.name/comments/feed/" title="RSS 上的最近评论">
             评论
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
          </ul>
         </div>
        </aside>
       </div>
       <!-- .widget-area -->
      </div>
      <!-- .sidebar-inner -->
     </div>
     <!-- #tertiary -->
    </div>
    <!-- #main -->
    <footer class="site-footer" id="colophon" role="contentinfo">
     <div class="site-info">
      版权所有 © 2014 统计之都 | 由
      <a href="http://wordpress.org/">
       WordPress
      </a>
      构建 | 主题修改自
      <a href="http://wordpress.org/themes/twentythirteen">
       Twenty Thirteen
      </a>
     </div>
     <!-- .site-info -->
    </footer>
    <!-- #colophon -->
   </div>
   <!-- #page -->
   <p style="margin:0;padding:0;height:1px;overflow:hidden;">
    <a href="http://www.wumii.com/widget/relatedItems" style="border:0;">
     <img src="http://static.wumii.cn/images/pixel.png"/>
    </a>
   </p>
  </div>
 </body>
</html>